/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package logica;

import javax.swing.*;
import java.awt.*;
import java.awt.Font;
import java.io.*;
import java.awt.Graphics;
import java.awt.PrintJob;
import java.util.Properties;
import views.OpcionesAvanzadas;

/**
 *
 * @author Facundo
 */
public class GeneradorDocumentos {

    /*
     * Font fuente = new Font("Dialog", Font.PLAIN, 7); Font fuenteTitulo = new
     * Font("Dialog", Font.BOLD, 10); PrintJob pj; Graphics pagina;
     */
    public GeneradorDocumentos() {
        //pj = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), null, null);
    }

    public boolean propertiesFileGenerado() {
        FileInputStream is = null;
        try {
            is = new FileInputStream(OpcionesAvanzadas.rutaPropertiesFile);
            is.close();
            return true;
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, "No se puede abrir el archivo properties/No está creado");
            return false;
        }
    }

    public boolean propertiesFileContiene(String key) {
        Properties prop = new Properties();
        FileInputStream is = null;
        try {
            is = new FileInputStream(OpcionesAvanzadas.rutaPropertiesFile);
            prop.load(is);
            is.close();
            if (prop.getProperty(key) == null) {
                return false;
            }
            return true;
        } catch (IOException ioex) {
            ioex.printStackTrace();
        }
        return false;
    }

    public void imprimirContrato(String codigo, String documento, String dia, String mes, String anio, String personas, String cliente, String unidad, String dias, String total) {

        /*
         * JFileChooser chooser = new JFileChooser();
         * chooser.setDialogTitle("Selección de plantilla Documento");
         * chooser.setCurrentDirectory(new java.io.File("."));
         * chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
         * chooser.setAcceptAllFileFilterUsed(false);
         *
         * if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
         * File f = new File(chooser.getSelectedFile().toString());
         */
        String nombrePlantillaContrato = "";
        FileInputStream is;
        Properties prop = new Properties();
        if ((!propertiesFileGenerado()) || (!propertiesFileContiene("contrato"))) {
            OpcionesAvanzadas.seleccionarPlantillaContrato();
        }
        if (propertiesFileGenerado()) {
            try {
                is = new FileInputStream(OpcionesAvanzadas.rutaPropertiesFile);
                prop.load(is);
                is.close();
            } catch (IOException ioex) {
                ioex.printStackTrace();
            }
            nombrePlantillaContrato = prop.getProperty("contrato");
        }
        File f = new File(nombrePlantillaContrato);
        BufferedReader entrada;
        int saltoLinea = 40;

        Font fuente = new Font("Dialog", Font.PLAIN, 7);
        Font fuenteTitulo = new Font("Dialog", Font.BOLD, 10);
        PrintJob pj;
        Graphics pagina;
        pj = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), null, null);

        try {
            pagina = pj.getGraphics();
            pagina.setFont(fuenteTitulo);
            pagina.setColor(Color.black);
            pagina.drawString("CONTRATO DE LOCACION ALQUILER TEMPORARIO", 40, 20);
            pagina.setFont(fuente);
            entrada = new BufferedReader(new FileReader(f));
            String linea;
            while (entrada.ready()) {
                linea = entrada.readLine();
                linea = linea.replace("*CODIGO*", codigo);
                linea = linea.replace("*DIA*", dia);
                linea = linea.replace("*MES*", mes);
                linea = linea.replace("*ANIO*", anio);
                linea = linea.replace("*CLIENTE*", cliente);
                linea = linea.replace("*DOCUMENTO*", documento);
                linea = linea.replace("*PERSONAS*", personas);
                linea = linea.replace("*UNIDAD*", unidad);
                linea = linea.replace("*DIAS*", dias);
                linea = linea.replace("*TOTAL*", total);
                pagina.drawString(linea, 40, saltoLinea);
                saltoLinea = saltoLinea + 10;
            }

            pagina.dispose();
            pj.end();
            JOptionPane.showMessageDialog(null, "La impresión se ha realizado correctamente", "Impresión Documento", JOptionPane.INFORMATION_MESSAGE, null);
        } catch (Exception e) {
            String out = "Se ha cancelado la impresión. ";

            if (e.getClass() == NullPointerException.class) {
                if (e.getMessage() != null) {
                    if (e.getMessage().contains("No such file or directory")) {
                        out += "No existe el archivo de Contrato o ha cambiado";
                    }
                }
            }
            JOptionPane.showMessageDialog(null, out, "Impresion Documento", JOptionPane.ERROR_MESSAGE, null);
        }
        //}
    }

    public void imprimirTarjetaCheckIn(String codigo, String documento, String dia, String mes, String anio, String personas, String cliente, String unidad, String dias, String total) {

        /*
         * JFileChooser chooser = new JFileChooser();
         * chooser.setDialogTitle("Selección de plantilla de Checking Card");
         * chooser.setCurrentDirectory(new java.io.File("."));
         * chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
         * chooser.setAcceptAllFileFilterUsed(false);
         */

        //if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {

        // File f = new File(chooser.getSelectedFile().toString());
        String nombrePlantillaCheckIn = "";
        FileInputStream is;
        Properties prop = new Properties();
        if ((!propertiesFileGenerado()) || (!propertiesFileContiene("checkIn"))) {
            OpcionesAvanzadas.seleccionarPlantillaCheckIn();
        }
        if (propertiesFileGenerado()) {
            try {
                is = new FileInputStream(OpcionesAvanzadas.rutaPropertiesFile);
                prop.load(is);
                is.close();
            } catch (IOException ioex) {
                ioex.printStackTrace();
            }
            nombrePlantillaCheckIn = prop.getProperty("checkIn");
        }
        File f = new File(nombrePlantillaCheckIn);
        BufferedReader entrada;
        int saltoLinea = 40;

        Font fuente = new Font("Dialog", Font.PLAIN, 7);
        Font fuenteTitulo = new Font("Dialog", Font.BOLD, 10);
        PrintJob pj;
        Graphics pagina;
        pj = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), null, null);

        try {
            pagina = pj.getGraphics();
            pagina.setFont(fuenteTitulo);
            pagina.setColor(Color.black);
            pagina.drawString("Complejo Pielago 2013", 40, 20);
            pagina.drawString("Tarjeta de Check-In", 40, 40);
            pagina.setFont(fuente);
            entrada = new BufferedReader(new FileReader(f));
            String linea;
            while (entrada.ready()) {
                linea = entrada.readLine();
                linea = linea.replace("*CODIGO*", codigo);
                linea = linea.replace("*DIA*", dia);
                linea = linea.replace("*MES*", mes);
                linea = linea.replace("*ANIO*", anio);
                linea = linea.replace("*CLIENTE*", cliente);
                linea = linea.replace("*DOCUMENTO*", documento);
                linea = linea.replace("*PERSONAS*", personas);
                linea = linea.replace("*UNIDAD*", unidad);
                linea = linea.replace("*DIAS*", dias);
                linea = linea.replace("*TOTAL*", total);
                pagina.drawString(linea, 40, saltoLinea);
                saltoLinea = saltoLinea + 10;
            }

            pagina.dispose();
            pj.end();
            JOptionPane.showMessageDialog(null, "La impresión se ha realizado correctamente", "Impresión Documento", JOptionPane.INFORMATION_MESSAGE, null);
        } catch (Exception e) {
            String out = "Se ha cancelado la impresión. ";

            if (e.getClass() == NullPointerException.class) {
                if (e.getMessage() != null) {
                    if (e.getMessage().contains("No such file or directory")) {
                        out += "No existe el archivo de Check-In o ha cambiado";
                    }
                }
            }
            JOptionPane.showMessageDialog(null, out, "Impresion Documento", JOptionPane.ERROR_MESSAGE, null);
        }
        //}
    }
}
